#include <iostream>
#include <stdlib.h>
#include <stdlib.h>
#include <ctype.h>
#include "Token.h"
#include "Estado.h"

#define X  70
#define Y 256

class MaquinaEstado
{
private:
	Estado matrizTransacao[X][Y];
	Estado estadoAtual;

public:
	MaquinaEstado();
	void initMaquinaEstado();
	void initMatrizVazia();
	void resetarEstadoInicial();
	Estado getEstadoAtual();
	void setEstadoErroParaLetras(int index);
	Estado montarEstadoPorParametros(TokenType tipo, MaquinaEstadoEnum estadoAtual);
	Estado atualizarEstado(int trans);
	void setForNumeros(MaquinaEstadoEnum estadoEnum, Estado estado);
	void setForCaracteres(MaquinaEstadoEnum estadoEnum, Estado estado);
	void setForEstadoErro(MaquinaEstadoEnum estadoEnum);
};
